range of items, or group of discontiguous items causes the
selection states of those items to be toggled. In Extended
Select, pressing and dragging BBBBSSSSeeeelllleeeecccctttt to indicate an item,
range of items, or group of discontiguous items selects
those items and deselects all others. Pressing and dragging
BBBBEEEExxxxtttteeeennnndddd in Extended Select to indicate an item, range of
items, or discontiguous group of items causes the selection
states of those items to be toggled.
Several techniques are available to indicate an item, range
of items, or group of discontiguous items in the Multiple
Select and Extended Select modes.
In the XXXXmmmmSSSSPPPPAAAATTTTIIIIAAAALLLL and XXXXmmmmOOOOUUUUTTTTLLLLIIIINNNNEEEE layout types, the
XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnTTTTeeeecccchhhhnnnniiiiqqqquuuueeee resource specifies the techniques to
be used to indicate items. The default specification of
XXXXmmmmTTTTOOOOUUUUCCCCHHHH____OOOOVVVVEEEERRRRallows both the Random-Swipe and Marquee
techniques to be used when _X_m_N_l_a_y_o_u_t_S_t_y_l_e is XXXXmmmmSSSSPPPPAAAATTTTIIIIAAAALLLL. The
default specification of XXXXmmmmTTTTOOOOUUUUCCCCHHHH____OOOOVVVVEEEERRRR allows the Range-
Swipe, Range-Click, and Marquee techniques to be used when
_X_m_N_l_a_y_o_u_t_S_t_y_l_e is XXXXmmmmOOOOUUUUTTTTLLLLIIIINNNNEEEE.
Discontiguous groups of items can be selected using the
Random-Swipe technique. In the Random-Swipe technique,
pressing BBBBSSSSeeeelllleeeecccctttt (or BBBBEEEExxxxtttteeeennnndddd) over an item and dragging
BBBBSSSSeeeelllleeeecccctttt over other items selects all of those items. Only
those items that pointer passed over are selected.
In the Range-Swipe technique, the user presses BBBBSSSSeeeelllleeeecccctttt (or
BBBBEEEExxxxtttteeeennnndddd) over the first item and releases BBBBSSSSeeeelllleeeecccctttt over the
last item; all items within the range between the first and
last item are selected whether the pointer actually passed
over them or not. In the Range-Click technique, the user
presses and releases BBBBSSSSeeeelllleeeecccctttt (or BBBBEEEExxxxtttteeeennnndddd) over the first
item and then presses and releases BBBBEEEExxxxtttteeeennnndddd over the last
item.
In the Marquee technique, pressing BBBBSSSSeeeelllleeeecccctttt (or BBBBEEEExxxxtttteeeennnndddd) over
a blank space within the Container indicates the starting
point of a Marquee rectangle. Dragging BBBBSSSSeeeelllleeeecccctttt draws a
Marquee rectangle (rubberband line) between the starting
point and current pointer. All items completely within the
Marquee rectangle are selected.
Specifying XXXXmmmmTTTTOOOOUUUUCCCCHHHH____OOOONNNNLLLLYYYY for XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnTTTTeeeecccchhhhnnnniiiiqqqquuuueeee enforces
the Random-Swipe technique even when BBBBSSSSeeeelllleeeecccctttt (or BBBBEEEExxxxtttteeeennnndddd) is
pressed over a blank space. Similarly, specifying XXXXmmmmMMMMAAAARRRRQQQQUUUUEEEEEEEE
enforces the Marquee technique even when BBBBSSSSeeeelllleeeecccctttt (or
BBBBEEEExxxxtttteeeennnndddd) is pressed over an item; since the item over which
the press occurs is only partially included in the Marquee
rectangle, it is not selected. XXXXmmmmMMMMAAAARRRRQQQQUUUUEEEEEEEE____EEEEXXXXTTTTEEEENNNNDDDD____SSSSTTTTAAAARRRRTTTT and
XXXXmmmmMMMMAAAARRRRQQQQUUUUEEEEEEEE____EEEEXXXXTTTTEEEENNNNDDDD____BBBBOOOOTTTTHHHH enforce the Marquee technique and also
XXXXmmmmCCCCRRRR____MMMMUUUULLLLTTTTIIIIPPPPLLLLEEEE____SSSSEEEELLLLEEEECCCCTTTT, or XXXXmmmmCCCCRRRR____EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____MMMMUUUULLLLTTTTIIIIPPPPLLLLEEEE,
depending on XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy.
display. When XXXXmmmmNNNNllllaaaayyyyoooouuuuttttTTTTyyyyppppeeee is XXXXmmmmOOOOUUUUTTTTLLLLIIIINNNNEEEE or
XXXXmmmmDDDDEEEETTTTAAAAIIIILLLL, items are displayed in XXXXmmmmNNNNppppoooossssiiiittttiiiioooonnnnIIIInnnnddddeeeexxxx
order within XXXXmmmmNNNNeeeennnnttttrrrryyyyPPPPaaaarrrreeeennnntttt. Items that have an
XXXXmmmmNNNNeeeennnnttttrrrryyyyPPPPaaaarrrreeeennnntttt resource are ignored when
XXXXmmmmNNNNllllaaaayyyyoooouuuuttttTTTTyyyyppppeeee is XXXXmmmmSSSSPPPPAAAATTTTIIIIAAAALLLL. If XXXXmmmmNNNNppppoooossssiiiittttiiiioooonnnnIIIInnnnddddeeeexxxx
is not specified, it defaults to the
XXXXmmmmNNNNppppoooossssiiiittttiiiioooonnnnIIIInnnnddddeeeexxxx value plus 1 of the item with the
highest XXXXmmmmNNNNppppoooossssiiiittttiiiioooonnnnIIIInnnnddddeeeexxxx that has the same
XXXXmmmmNNNNeeeennnnttttrrrryyyyPPPPaaaarrrreeeennnntttt if such an item exists; otherwise,
A pointer to the following structure is passed to callbacks
for XXXXmmmmNNNNoooouuuuttttlllliiiinnnneeeeCCCChhhhaaaannnnggggeeeeddddCCCCaaaallllllllbbbbaaaacccckkkk.
typedef struct
{
int _r_e_a_s_o_n;
XEvent * _e_v_e_n_t;
Widget _i_t_e_m;
unsigned char _n_e_w__o_u_t_l_i_n_e__s_t_a_t_e;
} XmContainerOutlineCallbackStruct;
_r_e_a_s_o_n Specifies the reason for the callback.
_e_v_e_n_t Points to the _X_E_v_e_n_t that triggered the callback.
It can be NULL.
_i_t_e_m Specifies the container item affected by the
event.
_n_e_w__o_u_t_l_i_n_e__s_t_a_t_e
Specifies the next XXXXmmmmNNNNoooouuuuttttlllliiiinnnneeeeSSSSttttaaaatttteeee for _i_t_e_m. The
user can change this value in the callback.
A pointer to the following structure is passed to callbacks
for XXXXmmmmNNNNddddeeeeffffaaaauuuullllttttAAAAccccttttiiiioooonnnnCCCCaaaallllllllbbbbaaaacccckkkk and XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnCCCCaaaallllllllbbbbaaaacccckkkk.
where XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy is
XXXXmmmmMMMMUUUULLLLTTTTIIIIPPPPLLLLEEEE____SSSSEEEELLLLEEEECCCCTTTT, except that
XXXXmmmmCCCCRRRR____EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____SSSSEEEELLLLEEEECCCCTTTT is the callback
reason given if XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnCCCCaaaallllllllbbbbaaaacccckkkk is
called.
ContainerBeginToggle():
Simply returns if XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy is
XXXXmmmmSSSSIIIINNNNGGGGLLLLEEEE____SSSSEEEELLLLEEEECCCCTTTT or XXXXmmmmBBBBRRRROOOOWWWWSSSSEEEE____SSSSEEEELLLLEEEECCCCTTTT.
Otherwise, if the pointer is over an item and
XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnTTTTeeeecccchhhhnnnniiiiqqqquuuueeee is not XXXXmmmmMMMMAAAARRRRQQQQUUUUEEEEEEEE, this
action toggles the selection state of that item.
The item becomes the anchor item for further
selection. If XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnTTTTeeeecccchhhhnnnniiiiqqqquuuueeee is XXXXmmmmMMMMAAAARRRRQQQQUUUUEEEEEEEE,
XXXXmmmmMMMMAAAARRRRQQQQUUUUEEEEEEEE____EEEEXXXXTTTTEEEENNNNDDDD____SSSSTTTTAAAARRRRTTTT, or
XXXXmmmmMMMMAAAARRRRQQQQUUUUEEEEEEEE____EEEEXXXXTTTTEEEENNNNDDDD____BBBBOOOOTTTTHHHHthis action sets the start
point for the Marquee rectangle. If
XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnTTTTeeeecccchhhhnnnniiiiqqqquuuueeee is XXXXmmmmMMMMAAAARRRRQQQQUUUUEEEEEEEE____EEEEXXXXTTTTEEEENNNNDDDD____SSSSTTTTAAAARRRRTTTT or
XXXXmmmmMMMMAAAARRRRQQQQUUUUEEEEEEEE____EEEEXXXXTTTTEEEENNNNDDDD____BBBBOOOOTTTTHHHH and the pointer is over an
item, this action draws the Marquee rectangle
around the item. If XXXXmmmmNNNNaaaauuuuttttoooommmmaaaattttiiiiccccSSSSeeeelllleeeeccccttttiiiioooonnnn is
XXXXmmmmAAAAUUUUTTTTOOOO____SSSSEEEELLLLEEEECCCCTTTT, the XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnCCCCaaaallllllllbbbbaaaacccckkkk(s) is
called with either XXXXmmmmCCCCRRRR____MMMMUUUULLLLTTTTIIIIPPPPLLLLEEEE____SSSSEEEELLLLEEEECCCCTTTTor
XXXXmmmmCCCCRRRR____EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____SSSSEEEELLLLEEEECCCCTTTT as the reason, depending on
XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy, and with aaaauuuuttttoooo____sssseeeelllleeeeccccttttiiiioooonnnn____ttttyyyyppppeeee
XXXXmmmmAAAAUUUUTTTTOOOO____BBBBEEEEGGGGIIIINNNN.
ContainerButtonMotion():
Processing depends on the value of
XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy, as follows:
Simply returns if XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy is
XXXXmmmmSSSSIIIINNNNGGGGLLLLEEEE____SSSSEEEELLLLEEEECCCCTTTT or XXXXmmmmBBBBRRRROOOOWWWWSSSSEEEE____SSSSEEEELLLLEEEECCCCTTTT. Simply
returns if XXXXmmmmNNNNllllaaaayyyyoooouuuuttttTTTTyyyyppppeeee is XXXXmmmmSSSSPPPPAAAATTTTIIIIAAAALLLL.
Otherwise, if XXXXmmmmNNNNaaaauuuuttttoooommmmaaaattttiiiiccccSSSSeeeelllleeeeccccttttiiiioooonnnn is
XXXXmmmmNNNNOOOO____AAAAUUUUTTTTOOOO____SSSSEEEELLLLEEEECCCCTTTT, XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnCCCCaaaallllllllbbbbaaaacccckkkk(s) is
called with either XXXXmmmmCCCCRRRR____MMMMUUUULLLLTTTTIIIIPPPPLLLLEEEE____SSSSEEEELLLLEEEECCCCTTTTor
XXXXmmmmCCCCRRRR____EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____SSSSEEEELLLLEEEECCCCTTTT as the reason depending on
XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy. If XXXXmmmmNNNNaaaauuuuttttoooommmmaaaattttiiiiccccSSSSeeeelllleeeeccccttttiiiioooonnnn is
XXXXmmmmAAAAUUUUTTTTOOOO____SSSSEEEELLLLEEEECCCCTTTT and no change is made in any item's
selection state by this action,
XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnCCCCaaaallllllllbbbbaaaacccckkkk(s) is called with either
XXXXmmmmCCCCRRRR____MMMMUUUULLLLTTTTIIIIPPPPLLLLEEEE____SSSSEEEELLLLEEEECCCCTTTTor XXXXmmmmCCCCRRRR____EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____SSSSEEEELLLLEEEECCCCTTTT as the
reason depending on XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy and
aaaauuuuttttoooo____sssseeeelllleeeeccccttttiiiioooonnnn____ttttyyyyppppeeee XXXXmmmmAAAAUUUUTTTTOOOO____CCCCHHHHAAAANNNNGGGGEEEE. If
XXXXmmmmNNNNaaaauuuuttttoooommmmaaaattttiiiiccccSSSSeeeelllleeeeccccttttiiiioooonnnn is XXXXmmmmAAAAUUUUTTTTOOOO____SSSSEEEELLLLEEEECCCCTTTT and this
action makes no change in any item's selection
state, XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnCCCCaaaallllllllbbbbaaaacccckkkk(s) is called with
either XXXXmmmmCCCCRRRR____MMMMUUUULLLLTTTTIIIIPPPPLLLLEEEE____SSSSEEEELLLLEEEECCCCTTTTor XXXXmmmmCCCCRRRR____EEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____SSSSEEEELLLLEEEECCCCTTTT
as the reason depending on XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy and
If the argument is LLLLeeeefffftttt, RRRRiiiigggghhhhtttt, UUUUpppp, or DDDDoooowwwwnnnn, this
action moves the location cursor one item in the
indicated direction, if possible. If the value of
the argument string is FFFFiiiirrrrsssstttt or LLLLaaaasssstttt, this action
moves the location cursor to the indicated item.
Any other arguments are ignored.
If XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy is XXXXmmmmBBBBRRRROOOOWWWWSSSSEEEE____SSSSEEEELLLLEEEECCCCTTTT, or if
XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy is XXXXmmmmEEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____SSSSEEEELLLLEEEECCCCTTTT and the
Container is in Normal Mode, this action deselects
all items, selects the item at the location
cursor, and calls XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnCCCCaaaallllllllbbbbaaaacccckkkk with the
reason depending on XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy.
ContainerPrimaryCopy():
This action requests that primary selection data
be copied to the Container. This action calls the
XXXXmmmmNNNNddddeeeessssttttiiiinnnnaaaattttiiiioooonnnnCCCCaaaallllllllbbbbaaaacccckkkk procedures for the _P_R_I_M_A_R_Y
selection and the XXXXmmmmCCCCOOOOPPPPYYYY operation. By default,
the Container does not do any transfer, and
copying the selection is the responsibility of the
XXXXmmmmNNNNllllaaaayyyyoooouuuuttttTTTTyyyyppppeeeeis XXXXmmmmSSSSPPPPAAAATTTTIIIIAAAALLLL, this action creates a
DragContext and starts a drag transfer by using
_s_t_r_i_n_g to specify the transfer operation. If no
argument string is specified, CCCCooooppppyyyy is the default
value.
Unless default drag and drop behavior has been
overridden by a XXXXmmmmNNNNccccoooonnnnvvvveeeerrrrttttCCCCaaaallllllllbbbbaaaacccckkkk procedure, if
the drop operation occurs within the Container,
then the item(s) being dragged are relocated at
the position of the drop operation. If the item
targeted by the Drag operation is not in the
selected state, then only that item is moved. If
the item is in the selected state, however, all
items in the selected state are moved.
ContainerToggleMode():
If XXXXmmmmNNNNsssseeeelllleeeeccccttttiiiioooonnnnPPPPoooolllliiiiccccyyyy is XXXXmmmmEEEEXXXXTTTTEEEENNNNDDDDEEEEDDDD____SSSSEEEELLLLEEEECCCCTTTT, this
XXXXmmmmCCCCrrrreeeeaaaatttteeeeIIIIccccoooonnnnGGGGaaaaddddggggeeeetttt(3), XXXXmmmmIIIIccccoooonnnnGGGGaaaaddddggggeeeetttt(3), and XXXXmmmmMMMMaaaannnnaaaaggggeeeerrrr(3).